﻿<?php
/** 
 * Classe d'accès aux données. 
 * Utilise les services de la classe PDO
 * pour l'application lafleur
 * Les attributs sont tous statiques,
 * les 4 premiers pour la connexion
 * $monPdo de type PDO 
 * $monPdoLafleur qui contiendra l'unique instance de la classe
 *
 * @package default
 * @author slam5
 * @version    1.0

 */

class PdoLafleur
{   		
      	private static $serveur='mysql:host=127.0.0.1';
      	private static $bdd='dbname=lafleur';   		
      	private static $user='root' ;    		
      	private static $mdp='' ;	
		private static $monPdo;
		private static $monPdoLafleur = null;
/**
 * Constructeur privé, crée l'instance de PDO qui sera sollicitée
 * pour toutes les méthodes de la classe
 */				
	private function __construct()
	{
    		PdoLafleur::$monPdo = new PDO(PdoLafleur::$serveur.';'.PdoLafleur::$bdd, PdoLafleur::$user, PdoLafleur::$mdp); 
			PdoLafleur::$monPdo->query("SET CHARACTER SET utf8");
	}
	public function _destruct(){
		PdoLafleur::$monPdo = null;
	}
/**
 * Fonction statique qui crée l'unique instance de la classe
 *
 * Appel : $instancePdolafleur = PdoLafleur::getPdoLafleur();
 * @return l'unique objet de la classe PdoLafleur
 */
	public  static function getPdoLafleur()
	{
		if(PdoLafleur::$monPdoLafleur == null)
		{
			PdoLafleur::$monPdoLafleur= new PdoLafleur();
		}
		return PdoLafleur::$monPdoLafleur;  
	}
/**
 * Retourne toutes les catégories sous forme d'un tableau associatif
 *
 * @return le tableau associatif des catégories 
*/
	public function getLesCategories()
	{
		$req = "select * from categorie";
		$res = PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetchAll();
		return $lesLignes;
	}
	

/**
 * Retourne sous forme d'un tableau associatif tous les produits de la
 * catégorie passée en argument
 * 
 * @param $idCategorie 
 * @return un tableau associatif  
*/
	public function getLesProduitsDeCategorie($idCategorie)
	{
	    $req="select * from produit where idCategorie = '$idCategorie'";
		$res = PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetchAll();
		return $lesLignes; 
	}

/**
 * Retourne le nombre de fois que l'on retrouve un administrateur ayant le login
 * et le mot de passe passés en argument (0 --> personne, 1 --> on a trouvé)
 * 
 * @param $log
 * @param $mdp
 * @return un integer  
*/
	public function getLesAdmin($log, $mdp)
	{
		$req="select count(id) as NbAdmin from administrateur where nom = '$log' and mdp = '$mdp'";
		$res=PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); //Retourne un string
		$nb = $lesLignes['NbAdmin']; //Pour retourner un integer
		return $nb;
	}

/**
 * Retourne sous forme d'un tableau associatif la catégorie dont l'id est passé
 * en paramètre
 * 
 * @param $idCategorie
 * @return un tableau associatif 
*/
	public function getLaCategorie($idCategorie)
	{
		$req="select * from categorie where id='$idCategorie'";
		$res = PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); 
		return $lesLignes;
	}

/**
 * Retourne sous forme d'un tableau associatif le produit que l'on veut ajouté
 * dont l'id, la description, le prix et le chemin de l'image sont passés en paramètre
 *
 * @param $id
 * @param $description
 * @param $prix
 * @param $image
 * @return un tableau associatif 
*/
	public function getLesAjoutsProd($id, $description, $prix, $image)
	{
		$idCateg = $_SESSION['idCateg'];
		
		$req = "insert into produit values('$id', '$description', '$prix', '$image', '$idCateg')";
		$res=PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); 
		return $lesLignes;
	}

/**
 * Retourne sous forme d'un tableau associatif le produit que l'on veut supprimer
 * dont l'id est passé en paramètre
 * 
 * @param $idProduit
 * @return un tableau associatif 
*/
	public function getSuppressionProd($idProduit)
	{
		$req = "delete from produit where id= '$idProduit'";
		$res=PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); 
		return $lesLignes;
	}
	
/**
 * Retourne sous forme d'un tableau associatif le produit dont l'id est passé
 * en paramètre
 * 
 * @param $idProduit
 * @return un tableau associatif 
*/	
	public function getLeProduit($idProduit)
	{
		$req="select * from produit where id = '$idProduit'";
		$res = PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); 
		return $lesLignes;
	}

/**
 * Retourne sous forme d'un tableau associatif un produit modifié dont
 * son id, sa nouvelle description et son nouveau prix sont en paramètre
 * 
 * @param $idProduit
 * @param $description
 * @param $prix
 * @return un tableau associatif 
*/	
	public function getLesModifProduit($idProduit, $description, $prix)
	{
		$descr = $_SESSION["des"];
		$prixx = $_SESSION["prix"];
		
		$req = "update produit set id = '$idProduit', description = '$description', prix = '$prix' where id = '$idProduit' and description = '$descr' and prix = '$prixx'";
		$res=PdoLafleur::$monPdo->query($req);
		$lesLignes = $res->fetch(); 
		return $lesLignes;
	}
/**
 * Retourne les produits concernés par le tableau des idProduits passée en argument
 *
 * @param $desIdProduit tableau d'idProduits
 * @return un tableau associatif 
*/
	public function getLesProduitsDuTableau($desIdProduit)
	{
		$nbProduits = count($desIdProduit);
		$lesProduits=array();
		if($nbProduits != 0)
		{
			foreach($desIdProduit as $unIdProduit)
			{
				$req = "select * from produit where id = '$unIdProduit'";
				$res = PdoLafleur::$monPdo->query($req);
				$unProduit = $res->fetch();
				$lesProduits[] = $unProduit;
			}
		}
		return $lesProduits;
	}
/**
 * Crée une commande 
 *
 * Crée une commande à partir des arguments validés passés en paramètre, l'identifiant est
 * construit à partir du maximum existant ; crée les lignes de commandes dans la table contenir à partir du
 * tableau d'idProduit passé en paramètre
 * @param $nom 
 * @param $rue
 * @param $cp
 * @param $ville
 * @param $mail
 * @param $lesIdProduit
 
*/
	public function creerCommande($nom,$rue,$cp,$ville,$mail, $lesIdProduit )
	{
		$req = "select max(id) as maxi from commande";
		$res = PdoLafleur::$monPdo->query($req);
		$laLigne = $res->fetch();
		$maxi = $laLigne['maxi'] ;
		$maxi++;
		$idCommande = $maxi;
		echo $idCommande."<br>";
		$date = date('Y/m/d');
		$req = "insert into commande values ('$idCommande','$date','$nom','$rue','$cp','$ville','$mail')";
		echo $req."<br>";
		$res = PdoLafleur::$monPdo->exec($req);
		foreach($lesIdProduit as $unIdProduit)
		{
			$req = "insert into contenir values ('$idCommande','$unIdProduit')";
			echo $req."<br>";
			$res = PdoLafleur::$monPdo->exec($req);
		}
		
	
	}
}
?>